/*
 * 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
 * 
 * 指定登记&发行网站： https://www.zhiqim.com/ 欢迎加盟知启蒙，[编程有你，知启蒙一路随行]。
 *
 * 本文采用《知启蒙许可证》，除非符合许可证，否则不可使用该文件！
 * 1、您可以免费使用、修改、合并、出版发行和分发，再授权软件、软件副本及衍生软件；
 * 2、您用于商业用途时，必须在原作者指定的登记网站，按原作者要求进行登记；
 * 3、您在使用、修改、合并、出版发行和分发时，必须包含版权声明、许可声明，及保留原作者的著作权、商标和专利等知识产权；
 * 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时，必须在原作者指定的发行网站进行发行和分发；
 * 5、您可以在以下链接获取一个完整的许可证副本。
 * 
 * 许可证链接：http://zhiqim.org/licenses/zhiqim_register_publish_license.htm
 * 
 * 除非法律需要或书面同意，软件由原始码方式提供，无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
 */
package org.zhiqim.lottery;

import java.sql.Timestamp;

import org.zhiqim.httpd.HttpRequest;
import org.zhiqim.httpd.context.ZmlBootstrap;
import org.zhiqim.kernel.util.Ids;
import org.zhiqim.kernel.util.Sqls;
import org.zhiqim.kernel.util.Strings;
import org.zhiqim.lottery.dbo.LotteryInfo;
import org.zhiqim.lottery.dbo.LotteryUser;
import org.zhiqim.manager.dao.ZmrParamDao;
import org.zhiqim.orm.ORM;
import org.zhiqim.orm.dbo.Selector;

/**
 * 启动初始化
 *
 * @version v1.4.1 @author zouzhigang 2021-4-17 新建与整理
 */
public class LotteryBootstrap extends ZmlBootstrap
{
    private long lotteryId = 0;
    
    /*****************************************************************************************/
    //重写三项
    /*****************************************************************************************/
    
    @Override /** 关闭doShow日志 */
    public void log(HttpRequest request, String message, Throwable e)
    {
        if (message != null && Strings.contains(message, "[doShow]"))
            return;
        
        super.log(request, message, e);
    }
    
    @Override /** 在配置加载之后,在ZML配置之前 */
    protected void initBefore() throws Exception
    {
        context.setAttribute(LotteryBootstrap.class, this);
    }
    
    @Override /** 在配置加载之后,在ZML配置之后 */
    protected void initAfter() throws Exception
    {
        initParam();
        chkLottery();
        chkLotteryActive();
    }
    
    /*****************************************************************************************/
    //初始化项目
    /*****************************************************************************************/
    
    /** 初始化参数 */
    private void initParam()
    {//要求有管理台页
        ZmrParamDao.doUpdateManageLogin(true);
    }
    
    /** 检查抽奖活动，如果没有则创建一个 */
    private void chkLottery() throws Exception
    {
        if (ORM.table().count(LotteryInfo.class) > 0)
            return;
        
        long lotteryId = Ids.longId13();
        Timestamp datetime = Sqls.nowTimestamp();
        
        LotteryInfo item = new LotteryInfo();
        item.setLotteryId(lotteryId);
        item.setLotteryName("演示活动主题");
        item.setLotteryStatus(0);
        item.setLotteryActive(true);
        item.setLotteryLine(5);
        item.setLotteryRow(7);
        item.setLotteryLuckNum(1);
        item.setLotteryLuckPreNum(1);
        item.setLotteryCreated(datetime);
        
        ORM.table().insert(item);
        
        for (int i=0;i<200;i++)
        {
            LotteryUser user = new LotteryUser();
            user.setLotteryId(lotteryId);
            user.setUserId(Ids.longId13());
            user.setUserName("演示用户"+(i+1));
            user.setUserLuck(0);
            user.setUserType(1);
            
            ORM.table().insert(user);
        }
    }
    
    /** 检查是否有当前激活的抽奖 */
    private void chkLotteryActive() throws Exception
    {
        LotteryInfo lottery = ORM.table().item(LotteryInfo.class, new Selector("lotteryActive", true));
        if (lottery == null)
            return;
        
        //存在一个活动的
        lotteryId = lottery.getLotteryId();
    }
    
    /*****************************************************************************************/
    //获取&设置激活的抽奖编号
    /*****************************************************************************************/
    
    public long getActiveLottery()
    {
        return lotteryId;
    }
    
    public void setActiveLotteryId(long lotteryId)
    {
        this.lotteryId = lotteryId;
    }
}
